import Vue from 'vue'
import Vuex from 'vuex'
import axios from 'axios'

Vue.use(Vuex)
//1导入包
import createPersistedState from 'vuex-persistedstate'

export default new Vuex.Store({
  //核心配置项
  //1导入包


  plugins: [createPersistedState()],
  //唯一存储数据的地方
  state: {
    // token: localStorage.getItem('token') || '',
    token: '',
    //4
    userInfo: {},
  },
  //唯一同步更新数据的地方
  getters: {
  },
  //唯一同步更新获取数据的地方
  mutations: {
    updataToken(state, token) {
      state.token = token
      //将数组存储到本地存储实现持久化
      // localStorage.setItem('token', token)
    },
    //3 更新用户信息
    updateUserInfo(state, info) {
      state.userInfo = info
    }


  },
  //唯一异步获取数据的地方
  actions: {
    //2 发送请求 获取用户信息 存储到vuex中
    async initUserInfo(context) {
      //context Store是实例对象 context.state.token
      console.log(context, 'context');
      //2.1发送请求
      const { data: res } = await axios.get('/my/userinfo', {
        headers: { Authorization: context.state.token }
      })
      // res.data 存储用户信息的对象
      console.log('res', res);
      //3将.获取到的数据存储到vuex中
      // context.commit("mutations中的函数", res.data);
      context.commit("updateUserInfo", res.data);


    }



  },
  //模块化
  modules: {
  }
})
